package pck_gui;

import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Map;
import javax.swing.table.DefaultTableModel;
import pck_pojos.Cls_Trabajador;
import pck_utilitarios.Cls_Funciones;
import pck_utilitarios.Cls_InvocaWebService;
import pck_utilitarios.Cls_Parametros;
import pck_utilitarios.JP_Modelo;

/**
 *
 * @author supermiguelon
 */
public class JP_Trabajador_Buscar extends JP_Modelo {

    /** Creates new form JP_Trabajador_Buscar */
    public JP_Trabajador_Buscar() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        TXT_Trabajador = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        TBL_Trabajdor_Buscar = new javax.swing.JTable();
        BTN_Buscar = new javax.swing.JButton();
        BTN_fin = new javax.swing.JButton();
        BTN_siguiente = new javax.swing.JButton();
        BTN_siguiente1 = new javax.swing.JButton();
        BTN_anterior = new javax.swing.JButton();
        LBL_paginas = new javax.swing.JLabel();
        LBL_separador = new javax.swing.JLabel();
        LBL_totalpaginas = new javax.swing.JLabel();
        TXT_paginaactual = new javax.swing.JTextField();

        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(JP_Trabajador_Buscar.class);
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("jPanel1.border.title"))); // NOI18N
        jPanel1.setName("jPanel1"); // NOI18N
        jPanel1.setLayout(null);

        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N
        jPanel1.add(jLabel1);
        jLabel1.setBounds(110, 20, 110, 14);

        TXT_Trabajador.setName("TXT_Trabajador"); // NOI18N
        TXT_Trabajador.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                TXT_TrabajadorKeyPressed(evt);
            }
        });
        jPanel1.add(TXT_Trabajador);
        TXT_Trabajador.setBounds(220, 20, 160, 20);

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        TBL_Trabajdor_Buscar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "DNI", "Apellidos y Nombres", "Cargo"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        TBL_Trabajdor_Buscar.setName("TBL_Trabajdor_Buscar"); // NOI18N
        TBL_Trabajdor_Buscar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                TBL_Trabajdor_BuscarMouseClicked(evt);
            }
        });
        TBL_Trabajdor_Buscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                TBL_Trabajdor_BuscarKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(TBL_Trabajdor_Buscar);
        TBL_Trabajdor_Buscar.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("TBL_Trabajdor_Buscar.columnModel.title0")); // NOI18N
        TBL_Trabajdor_Buscar.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("TBL_Trabajdor_Buscar.columnModel.title1")); // NOI18N
        TBL_Trabajdor_Buscar.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("TBL_Trabajdor_Buscar.columnModel.title2")); // NOI18N

        jPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(10, 50, 560, 240);

        BTN_Buscar.setText(resourceMap.getString("BTN_Buscar.text")); // NOI18N
        BTN_Buscar.setName("BTN_Buscar"); // NOI18N
        BTN_Buscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BTN_BuscarActionPerformed(evt);
            }
        });
        jPanel1.add(BTN_Buscar);
        BTN_Buscar.setBounds(400, 20, 90, 20);

        BTN_fin.setText(resourceMap.getString("BTN_fin.text")); // NOI18N
        BTN_fin.setName("BTN_fin"); // NOI18N
        BTN_fin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BTN_finActionPerformed(evt);
            }
        });
        jPanel1.add(BTN_fin);
        BTN_fin.setBounds(430, 300, 50, 23);

        BTN_siguiente.setText(resourceMap.getString("BTN_siguiente.text")); // NOI18N
        BTN_siguiente.setName("BTN_siguiente"); // NOI18N
        BTN_siguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BTN_siguienteActionPerformed(evt);
            }
        });
        jPanel1.add(BTN_siguiente);
        BTN_siguiente.setBounds(380, 300, 50, 23);

        BTN_siguiente1.setText(resourceMap.getString("BTN_siguiente1.text")); // NOI18N
        BTN_siguiente1.setName("BTN_siguiente1"); // NOI18N
        BTN_siguiente1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BTN_siguiente1ActionPerformed(evt);
            }
        });
        jPanel1.add(BTN_siguiente1);
        BTN_siguiente1.setBounds(90, 300, 50, 23);

        BTN_anterior.setText(resourceMap.getString("BTN_anterior.text")); // NOI18N
        BTN_anterior.setName("BTN_anterior"); // NOI18N
        BTN_anterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BTN_anteriorActionPerformed(evt);
            }
        });
        jPanel1.add(BTN_anterior);
        BTN_anterior.setBounds(140, 300, 50, 23);

        LBL_paginas.setText(resourceMap.getString("LBL_paginas.text")); // NOI18N
        LBL_paginas.setName("LBL_paginas"); // NOI18N
        jPanel1.add(LBL_paginas);
        LBL_paginas.setBounds(300, 300, 40, 20);

        LBL_separador.setText(resourceMap.getString("LBL_separador.text")); // NOI18N
        LBL_separador.setName("LBL_separador"); // NOI18N
        jPanel1.add(LBL_separador);
        LBL_separador.setBounds(270, 300, 10, 20);

        LBL_totalpaginas.setText(resourceMap.getString("LBL_totalpaginas.text")); // NOI18N
        LBL_totalpaginas.setName("LBL_totalpaginas"); // NOI18N
        jPanel1.add(LBL_totalpaginas);
        LBL_totalpaginas.setBounds(280, 300, 30, 20);

        TXT_paginaactual.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        TXT_paginaactual.setText(resourceMap.getString("TXT_paginaactual.text")); // NOI18N
        TXT_paginaactual.setName("TXT_paginaactual"); // NOI18N
        TXT_paginaactual.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                TXT_paginaactualKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                TXT_paginaactualKeyTyped(evt);
            }
        });
        jPanel1.add(TXT_paginaactual);
        TXT_paginaactual.setBounds(230, 300, 30, 20);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 576, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 347, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents

    private void TXT_TrabajadorKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TXT_TrabajadorKeyPressed
        if (evt.getKeyCode() == 10) { // tecla enter
            BTN_Buscar.requestFocus();
        }
    }//GEN-LAST:event_TXT_TrabajadorKeyPressed

    private void BTN_BuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BTN_BuscarActionPerformed

        String textTrabajador = TXT_Trabajador.getText();
        if (TXT_Trabajador.getText().trim().equals("")) {
            textTrabajador = " ";
        }
        String camposTotal[] = {Cls_Parametros.Map_FILTRO_NOMBRE, textTrabajador};
        totalTrabajadores = Cls_InvocaWebService.obtenerCantidadDeTrabajadores(Cls_Funciones.generarHashMapParaSolicitud(camposTotal));
        paginaActual = 1;
        int exceso = totalTrabajadores % Cls_Parametros.TAMANIO_PAGINACION != 0 ? 1 : 0;
        numPaginas = totalTrabajadores / Cls_Parametros.TAMANIO_PAGINACION + exceso;

        LBL_totalpaginas.setText(numPaginas.toString());

        llenarTablaConPagina(paginaActual);
    }//GEN-LAST:event_BTN_BuscarActionPerformed

    private void TBL_Trabajdor_BuscarKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TBL_Trabajdor_BuscarKeyPressed

        if (evt.getKeyCode() == 10) { // tecla enter
            seleccionarFila();
        }

    }//GEN-LAST:event_TBL_Trabajdor_BuscarKeyPressed

    private void TBL_Trabajdor_BuscarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_TBL_Trabajdor_BuscarMouseClicked
        if (evt.getClickCount() == 2) {
            seleccionarFila();
        }
    }//GEN-LAST:event_TBL_Trabajdor_BuscarMouseClicked

    private void BTN_siguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BTN_siguienteActionPerformed
        paginaActual++;
        if (paginaActual > numPaginas) {
            paginaActual = numPaginas;
        } else {
            llenarTablaConPagina(paginaActual);
        }
    }//GEN-LAST:event_BTN_siguienteActionPerformed

    private void BTN_finActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BTN_finActionPerformed
        if (paginaActual != numPaginas) {
            paginaActual = numPaginas;
            llenarTablaConPagina(paginaActual);
        }
    }//GEN-LAST:event_BTN_finActionPerformed

    private void BTN_anteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BTN_anteriorActionPerformed
        paginaActual--;
        if (paginaActual < 1) {
            paginaActual = 1;
        } else {
            llenarTablaConPagina(paginaActual);
        }
    }//GEN-LAST:event_BTN_anteriorActionPerformed

    private void BTN_siguiente1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BTN_siguiente1ActionPerformed
        if (paginaActual != 1) {
            paginaActual = 1;
            llenarTablaConPagina(paginaActual);
        }
    }//GEN-LAST:event_BTN_siguiente1ActionPerformed

    private void TXT_paginaactualKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TXT_paginaactualKeyTyped
        if (evt.getKeyChar() < '0' || evt.getKeyChar() > '9'
                && evt.getKeyChar() != '\b') {
            evt.consume();
        }
    }//GEN-LAST:event_TXT_paginaactualKeyTyped

    private void TXT_paginaactualKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TXT_paginaactualKeyPressed
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            int flag;
            try {
                flag = Integer.parseInt(TXT_paginaactual.getText());

                if (flag < 1 || flag > numPaginas && flag != paginaActual) {
                    flag = paginaActual;
                    TXT_paginaactual.setText(paginaActual.toString());
                } else {
                    paginaActual = flag;
                    llenarTablaConPagina(paginaActual);
                }
            } catch (NumberFormatException e) {
                TXT_paginaactual.setText(paginaActual.toString());
            }
        }
    }//GEN-LAST:event_TXT_paginaactualKeyPressed

    private void seleccionarFila() {
        try {
            String codigo = "", nombre = "", cargo = "";
            codigo = (String) this.TBL_Trabajdor_Buscar.getValueAt(this.TBL_Trabajdor_Buscar.getSelectedRow(), 0);
            nombre = (String) this.TBL_Trabajdor_Buscar.getValueAt(this.TBL_Trabajdor_Buscar.getSelectedRow(), 1);
            cargo = (String) this.TBL_Trabajdor_Buscar.getValueAt(this.TBL_Trabajdor_Buscar.getSelectedRow(), 2);
            if (this.getRefDep() instanceof JP_Asignar_Profesion_Trabajador) {
                ((JP_Asignar_Profesion_Trabajador) this.getRefDep()).obtenerDatosTrabajador(codigo);
            } else {
                if (this.getRefDep() instanceof JP_Asignar_Jefatura_Unidad_Organica) {
                    ((JP_Asignar_Jefatura_Unidad_Organica) this.getRefDep()).obtenerJefe(codigo);
                } else {
                    if (this.getRefDep() instanceof JP_Trabajador_Dar_Vacaciones) {
                        ((JP_Trabajador_Dar_Vacaciones) this.getRefDep()).obtenerDatosTrabajador(codigo);
                    } else {
                        if (this.getRefDep() instanceof JP_Trabajador_Encargado) {
                            ((JP_Trabajador_Encargado) this.getRefDep()).obtenerDatosTrabajador(codigo, nombre);
                        } else {
                            if (this.getRefDep() instanceof JP_Actualizar_Unidad_Organica) {
                                ((JP_Actualizar_Unidad_Organica) this.getRefDep()).obtenerDatosTrabajador(codigo, nombre, cargo);
                            }
                        }
                    }
                }
            }
            this.cerrarPadre();
        } catch (ArrayIndexOutOfBoundsException e) {
//            e.printStackTrace();
        }
    }
    private Integer totalTrabajadores;
    private Integer numPaginas;
    private Integer paginaActual;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton BTN_Buscar;
    private javax.swing.JButton BTN_anterior;
    private javax.swing.JButton BTN_fin;
    private javax.swing.JButton BTN_siguiente;
    private javax.swing.JButton BTN_siguiente1;
    private javax.swing.JLabel LBL_paginas;
    private javax.swing.JLabel LBL_separador;
    private javax.swing.JLabel LBL_totalpaginas;
    private javax.swing.JTable TBL_Trabajdor_Buscar;
    private javax.swing.JTextField TXT_Trabajador;
    private javax.swing.JTextField TXT_paginaactual;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables

    private void llenarTablaConPagina(Integer pagina) {

        TXT_paginaactual.setText(pagina.toString());
        String parametrosParaService_01[] = {Cls_Parametros.Map_FILTRO_NOMBRE, TXT_Trabajador.getText()};
        String parametrosParaService_02[] = {Cls_Parametros.Map_PAGE, pagina.toString()};
        String parametrosParaService_03[] = {Cls_Parametros.Map_PAGE_TAMANIO, Cls_Parametros.TAMANIO_PAGINACION.toString()};
        Map map = Cls_Funciones.generarHashMapParaRequest(Cls_Funciones.generarHashMapParaSolicitud(parametrosParaService_01),
                Cls_Funciones.generarHashMapParaSolicitud(parametrosParaService_02),
                Cls_Funciones.generarHashMapParaSolicitud(parametrosParaService_03));
        ArrayList<Cls_Trabajador> array_trabajadores = Cls_InvocaWebService.obtenerTodosTrabajadoresVacaciones(map);
        String fila[];
        DefaultTableModel mode = (DefaultTableModel) this.TBL_Trabajdor_Buscar.getModel();
        while (mode.getRowCount() > 0) {
            mode.removeRow(0);
        }
        for (Cls_Trabajador trabajadores : array_trabajadores) {
            fila = new String[3];
            fila[0] = trabajadores.getCodigo();
            fila[1] = trabajadores.getNombres();
            fila[2] = trabajadores.getCargo();
            mode.addRow(fila);
        }
        this.TBL_Trabajdor_Buscar.requestFocus();
    }
}
